<!DOCTYPE html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8">
    <title>Sucha's Blog - Archive for April, 2022</title>
    <meta name="generator" content="MarkdownProjectCompositor.lua">
    <meta name="author" content="Sucha">
    <meta name="keywords" content="suchang, programming, Linux, Lua">
    <meta name="description" content="Sucha's blog">
    <link rel="shortcut icon" href="../images/ico.png">
    <link rel="stylesheet" type="text/css" href="../styles/blog.css">
    <link rel="stylesheet" type="text/css" href="../styles/prism.min.css">
    <style id="site_theme"></style>
  </head>
  <body>
    <div id="body">
      <div id="text">
	   <!-- Page published by cmark-gfm begins here --><h1>Sucha's Blog ~ Archive for April, 2022</h1>
<p><a id="p0"></a></p>
<div class="date">22年4月5日 周六 01:28</div>
<h2>改进侧边栏搜索</h2>
<ul>
<li>改进了 site 和 blog 的侧边栏搜索，用的搜索引擎是 cn.bing.com</li>
<li>更改了 Yulin City Map 的地图卫星图像 URL，来源为 map.baidu.com</li>
</ul>
<p>UI 交互没变化，也是方便之后如果想从站点、博客搜索内容的话，会方便一些，不过自己测试了一下，很多内容搜索不到，应该是小站点，搜索引擎照顾不了。</p>
<p>没名气的静态网页就这样的了，😌</p>
<div class="category"><a href="CategoryThisSite.html">CategoryThisSite</a> / <a href="2022-04.html#p0">Permalink</a> / <a href="https://github.com/lalawue/homepage/discussions/categories/blog" target="_blank">Discussion</a></div>
<p><a id="p0"></a></p>
<div class="date">22年4月5日 周六 01:28</div>
<h2>MoocHelper 更新到 0.2.12</h2>
<p>项目地址 <a href="https://github.com/lalawue/MoocHelper">MoocHelper</a>，同时更新了 .vsix 跨平台安装包。</p>
<p>因为 LuaHelper 前段时间更新了，我也跟着将基本的代码更新上去，这次改动主要是 anotation，语法方面我觉得没有什么变化。
anotation 我用得少，所以相关改变也说不上了解。</p>
<p>另外修复了 switch case 中 case 后面 exp 的一些解析问题，之前跟 Lua EBNF 表述的 prefixexp 语法 ':' 有冲突。</p>
<p>mooncake 里 case 紧接着的 exp 可以是右值，比如 object:func1(param1):func2(param2) 是一个合法的 Lua prefixexp，
而 case 语句依赖 ':' 作为终结符，由于 Lua 不依赖空格、分行、间距来作为语法分割，因此刚刚的 exp 对于两个不同的 ':' 可以有多种解释：</p>
<pre><code class="language-lua">-- case 1
case object:
    func1(param):func2(param2)
-- case 2
case object:func1(param1):
    func2(param2)
-- case 3
case (object:func1(param1):func2(param2))
</code></pre>
<p>实际上 Lua 的 prefixexp 使用的是贪心策略，最终解析出来的是 case 3，认为 case 子句没有完结，会报语法错误。
而 mooncake 之前对这里没有定义，因此 case 1 和 case 2 都是可选的合法解释。</p>
<p>这次的修改加上了补充，认为 ':' 之后如果紧接着空格，比如 '\t'、'\n'、'\t'、'\v'，则认为是 case 语句的终结。
因此 case 1、case 2 才是 mooncake 合法的 case 语句，并且语义有区别。而 case 3 并不是合法的语句。</p>
<p>大概这样吧。</p>
<div class="category"><a href="CategoryProgramming.html">CategoryProgramming</a> / <a href="2022-04.html#p0">Permalink</a> / <a href="https://github.com/lalawue/homepage/discussions/categories/blog" target="_blank">Discussion</a></div>
<!-- Page published by cmark-gfm ends here -->
  <div id="foot">2004-<script>var d = new
	Date();document.write(d.getFullYear())</script> &copy;
	Sucha. Powered by MarkdownProjectCompositor.
  </div>
  </div><!-- text -->
  <div id="sidebar">
  </div><!-- sidebar -->
  <script src="../js/prism.min.js" async="async"></script>
  <script src="../js/blog_sidebar.js"></script>
  </div> <!-- body -->
</body>
</html>